#nullable enable

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Logging;
using PHMEE.DTOS.Diagnosis;
using Volo.Abp.AspNetCore.SignalR;

namespace PHMEE.Services.Diagnosis;

// /// <summary>
// /// 机组/设备实时报警记录 SignalR Hub
// /// </summary>
// [AllowAnonymous]
// [HubRoute("/hub/alarmRecordRealtimeHub")]
// public class AlarmRecordRealtimeHub : AbpHub<IAlarmRecordRealtimeClient>
// {
//     private readonly ILogger<AlarmRecordRealtimeHub> _logger;
//
//     public AlarmRecordRealtimeHub(ILogger<AlarmRecordRealtimeHub> logger)
//     {
//         _logger = logger;
//     }
//     
//     // 用户进入机组页面时，加入对应的 unitId 分组
//     public async Task JoinUnitGroup(string unitId)
//     {
//         _logger.LogDebug("加入机组 Group, unitId: {unitId}", unitId);
//         await Groups.AddToGroupAsync(Context.ConnectionId, unitId);
//     }
//
//     // 用户离开机组页面时，退出 unitId 分组
//     public async Task LeaveUnitGroup(string unitId)
//     {
//         _logger.LogDebug("离开机组 Group, unitId: {unitId}", unitId);
//         await Groups.RemoveFromGroupAsync(Context.ConnectionId, unitId);
//     }
//
//     // // 监听到新报警事件时，推送给相关设备的客户端
//     // public async Task PushNewAlarm(AlarmRecordRealtimeDto alarm, string unitId)
//     // {
//     //     // 调用客户端类型化方法
//     //     await Clients.Group(unitId).NewAlarm(alarm);
//     // }
//     //
//     // // 监听到报警确认事件时，通知相关设备的客户端，删除已确认的报警
//     // public async Task PushConfirmedAlarm(Guid alarmId, string unitId)
//     // {
//     //     // 调用客户端类型化方法
//     //     await Clients.Group(unitId).AlarmConfirmed(alarmId);
//     // }
//     
//     public override async Task OnDisconnectedAsync(Exception? exception)
//     {
//         if (exception != null)
//         {
//             _logger.LogInformation("客户端断开连接，原因: {Message}", exception.Message);
//         }
//         else
//         {
//             _logger.LogInformation("客户端主动断开连接");
//         }
//         // 客户端断开连接时从组中移除
//         await Groups.RemoveFromGroupAsync(Context.ConnectionId, "groupId");
//         await base.OnDisconnectedAsync(exception);
//     }
// }
//
// public interface IAlarmRecordRealtimeClient
// {
//     // 客户端收到新报警信息
//     Task NewAlarm(AlarmRecordRealtimeDto alarm);
//
//     // 客户端收到报警确认通知
//     Task AlarmAcked(AlarmRecordAckedRealtimeDto acked);
// }